package com.qwc.blog.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qwc.blog.entity.Article;
import com.qwc.blog.entity.dto.ArticleDto;
import com.qwc.blog.entity.dto.ArticleRequestDto;
import com.qwc.blog.entity.dto.ArticleReturnDto;
import com.qwc.blog.entity.dto.BlogArticleDto;
import com.qwc.blog.entity.vo.ArticleWithTagVo;

import java.util.List;

/**
 * <p>
 * 文章元信息表 服务类
 * </p>
 *
 * @author qwc
 * @since 2022-01-24
 */
public interface IArticleService extends IService<Article> {

    /**
     * 分页获取数据
     * @param dto
     * @return
     */
    ArticleRequestDto<Article> pageList(ArticleRequestDto<Article> dto);

    /**
     * 保存文章信息
     * @param dto
     * @return
     */
    boolean saveArticleAndContent(ArticleDto dto);

    /**
     * 获取文章
     * @param id
     * @return
     */
    ArticleReturnDto getByArticleId(Integer id);

    /**
     * 修改文章内容
     * @param dto
     * @return
     */
    boolean updateByArticleId(ArticleDto dto);

    /**
     * 删除文章及文章分类和标签
     * @param ids
     * @return
     */
    boolean removeAllByIds(List<Integer> ids);

    /**
     * 获取数据并缓存
     * @return
     */
    List<Article> listFromCache();

    /**
     * 获取最新的文章列表
     * @param dto
     * @return
     */
    Page<ArticleWithTagVo> pageWithTag(BlogArticleDto dto);
}
